package com.vehicle.mapper;

import com.vehicle.domains.entity.SysRoleEntity;
import com.vehicle.domains.bo.QueryRoleBo;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

/**
 * 系统角色Mapper接口
 * 与SysRoleMapper.xml映射，提供角色管理数据访问操作
 */
@Mapper
public interface SysRoleMapper {

    /**
     * 新增角色
     * @param role 角色实体类（包含roleCode、roleName、status等字段）
     * @return 影响行数（1：成功，0：失败）
     */
    int insertRole(SysRoleEntity role);

    /**
     * 根据ID修改角色（非空字段才更新）
     * @param role 角色实体类（必须包含id，可选填roleName、status等字段）
     * @return 影响行数（1：成功，0：失败/无变更）
     */
    int updateRoleById(SysRoleEntity role);

    /**
     * 根据ID查询角色
     * @param id 角色ID
     * @return 角色实体类（包含完整字段）
     */
    SysRoleEntity selectRoleById(Long id);

    /**
     * 根据ID删除角色
     * @param id 角色ID
     * @return 影响行数（1：成功，0：失败）
     */
    int deleteRoleById(Long id);

    /**
     * 根据角色编码查询角色（用于唯一校验）
     * @param roleCode 角色编码
     * @return 角色实体类（存在则返回，不存在则返回null）
     */
    SysRoleEntity selectRoleByCode(String roleCode);

    /**
     * 分页查询角色列表（支持多条件筛选）
     * @param req 分页查询参数（包含roleCode、roleName、status、时间范围等）
     * @return 角色列表（按创建时间倒序）
     */
    List<SysRoleEntity> selectRoleList(QueryRoleBo  req);

}
